package com.houweishi.module.reimburse.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.houweishi.module.copy.domain.BizCopy;
import com.houweishi.module.record.domain.BizApprovalRecord;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.houweishi.common.annotation.Excel;
import com.houweishi.common.core.domain.BaseEntity;

/**
 * 报销单管理对象 oa_reimburse
 * 
 * @author houweishi
 * @date 2023-02-21
 */
@Data
public class OaReimburse extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 自增主键 */
    private Long reimburseId;

    /** 用户id */
//    @Excel(name = "用户id")
    private Long userId;

    /** 流水单号 */
    @Excel(name = "流水单号")
    private String serialNum;

    /** 用户名 */
    @Excel(name = "用户名")
    private String username;

    /** 报销项目 */
    @Excel(name = "报销项目")
    private String matter;

    /** 报销金额 */
    @Excel(name = "报销金额")
    private BigDecimal amount;

    /** 申请日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "申请日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applicationTime;

    /** 上传报销凭证，票据 */
    @Excel(name = "上传报销凭证，票据")
    private String voucher;

    /** 出纳上传转账照片凭证 */
    @Excel(name = "出纳上传转账照片凭证")
    private String transferPhoto;

    /** 状态 */
    @Excel(name = "状态")
    private String status;

    /** 所属租户 */
//    @Excel(name = "所属租户")
    private Long tenantId;

    /** 员工id */
//    @Excel(name = "员工id")
    private Long staffId;

    /** 员工姓名 */
    @Excel(name = "员工姓名")
    private String staffName;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /** 是否使用模板（1是 2否） */
    @Excel(name = "是否使用模板")
    private String typeStatus;

    /** 模板id */
//    @Excel(name = "模板id")
    private Long typeId;

    /** 模板名称 */
    @Excel(name = "模板名称")
    private String typeName;

    /** 审批人(多个） */
    private String approver;

    /** 审批人姓名(多个） */
    private String approverName;

    /** 申请表类型id */
//    @Excel(name = "申请表类型id")
    private Long subscribePatternId;

    /** 申请表类型名称 */
    @Excel(name = "申请表类型名称")
    private String subscribePatternName;

    /** 抄送人id */
//    @Excel(name = "审批人id")
    private String copyerId;

    /** 抄送人姓名 */
    @Excel(name = "审批人姓名")
    private String copyerName;

    /** 审批记录列表 */
    private List<BizApprovalRecord> approvalRecordList;

    /** 抄送记录列表 */
    private List<BizCopy> bizCopyList;

    public void setReimburseId(Long reimburseId) 
    {
        this.reimburseId = reimburseId;
    }

    public Long getReimburseId() 
    {
        return reimburseId;
    }
    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }
    public void setUsername(String username) 
    {
        this.username = username;
    }

    public String getUsername() 
    {
        return username;
    }
    public void setMatter(String matter) 
    {
        this.matter = matter;
    }

    public String getMatter() 
    {
        return matter;
    }
    public void setAmount(BigDecimal amount) 
    {
        this.amount = amount;
    }

    public BigDecimal getAmount() 
    {
        return amount;
    }
    public void setApplicationTime(Date applicationTime) 
    {
        this.applicationTime = applicationTime;
    }

    public Date getApplicationTime() 
    {
        return applicationTime;
    }
    public void setVoucher(String voucher) 
    {
        this.voucher = voucher;
    }

    public String getVoucher() 
    {
        return voucher;
    }
    public void setTransferPhoto(String transferPhoto) 
    {
        this.transferPhoto = transferPhoto;
    }

    public String getTransferPhoto() 
    {
        return transferPhoto;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    public void setTenantId(Long tenantId) 
    {
        this.tenantId = tenantId;
    }

    public Long getTenantId() 
    {
        return tenantId;
    }
    public void setStaffId(Long staffId) 
    {
        this.staffId = staffId;
    }

    public Long getStaffId() 
    {
        return staffId;
    }
    public void setStaffName(String staffName) 
    {
        this.staffName = staffName;
    }

    public String getStaffName() 
    {
        return staffName;
    }
    public void setDelFlag(String delFlag) 
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }

    public String getSerialNum() {
        return serialNum;
    }

    public void setSerialNum(String serialNum) {
        this.serialNum = serialNum;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this)
                .append("reimburseId", reimburseId)
                .append("userId", userId)
                .append("serialNum", serialNum)
                .append("username", username)
                .append("matter", matter)
                .append("amount", amount)
                .append("applicationTime", applicationTime)
                .append("voucher", voucher)
                .append("transferPhoto", transferPhoto)
                .append("status", status)
                .append("tenantId", tenantId)
                .append("staffId", staffId)
                .append("staffName", staffName)
                .append("delFlag", delFlag)
                .append("typeStatus", typeStatus)
                .append("typeId", typeId)
                .append("typeName", typeName)
                .append("approver", approver)
                .append("approverName", approverName)
                .append("subscribePatternId", subscribePatternId)
                .append("subscribePatternName", subscribePatternName)
                .append("approvalRecordList", approvalRecordList)
                .toString();
    }
}
